package com.yugao.fintech.antelope.system.model.entity;

import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.yugao.fintech.antelope.base.model.BasePlusPO;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.Objects;

/**
 * 常规资源表
 * 常规资源权限用于管理你的业务系统中以 API 为代表的类型资源，你可以创建资源、定义操作，并将资源与操作授权给不同主体。
 */
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@TableName("ram_api_resource")
public class RamApiResource extends BasePlusPO {

    public static LambdaQueryWrapper<RamApiResource> lqw() {
        return Wrappers.lambdaQuery();
    }

    public static LambdaUpdateWrapper<RamApiResource> luw() {
        return Wrappers.lambdaUpdate();
    }

    public static QueryWrapper<RamApiResource> qw() {
        return Wrappers.query();
    }

    @TableId
    private Long id;

    /**
     * 模块编码
     */
    private String moduleCode;

    /**
     * 资源动作类型
     */
    private String actionType;

    /**
     * 资源名称
     */
    private String name;

    /**
     * 资源路径, 要全路径
     */
    private String url;

    /**
     * 资源动作, 格式为 服务名:业务:具体操作
     */
    private String action;

    /**
     * 是否为个人资源
     */
    private Boolean isPersonal;

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        RamApiResource resource = (RamApiResource) o;
        return Objects.equals(action, resource.action);
    }

    @Override
    public int hashCode() {
        return Objects.hash(action);
    }
}
